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; i +#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 0000000000..186ab34007 Binary files /dev/null and b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_avx2 differ diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/main.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/main.c new file mode 100644 index 0000000000..c1737098e9 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/main.c @@ -0,0 +1,28 @@ +#include +#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; i\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 0000000000..5e123291d1 Binary files /dev/null and b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_avx2 differ 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 8699a8d0a0..de3b923c1f 100755 Binary files a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_avx512 and b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_avx512 differ diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/main.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/main.c similarity index 100% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/main.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/main.c diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/sauvegarde.tar.gz b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/sauvegarde.tar.gz new file mode 100644 index 0000000000..2cfcf359e2 Binary files /dev/null and b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/sauvegarde.tar.gz differ 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();