degradation of performance in BLER fixed | bnProc & bnProcPc unrolled | small improvement in times
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
|
||||
/*
|
||||
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
@@ -48,7 +49,6 @@
|
||||
#include "nrLDPC_tools/ldpc_gen_files/cnProc_avx512/nrLDPC_cnProc_BG2_R13_AVX512.h"
|
||||
#include "nrLDPC_tools/ldpc_gen_files/cnProc_avx512/nrLDPC_cnProc_BG2_R23_AVX512.h"
|
||||
|
||||
|
||||
#else
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
@@ -81,7 +81,18 @@
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_R23_AVX2.h"
|
||||
|
||||
//bnProc----------------------------------------------------------------
|
||||
|
||||
#ifdef __AVX512BW__
|
||||
//BG1-------------------------------------------------------------------
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc_avx512/nrLDPC_bnProc_BG1_R13_AVX512.h"
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc_avx512/nrLDPC_bnProc_BG1_R23_AVX512.h"
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc_avx512/nrLDPC_bnProc_BG1_R89_AVX512.h"
|
||||
//BG2 --------------------------------------------------------------------
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc_avx512/nrLDPC_bnProc_BG2_R15_AVX512.h"
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc_avx512/nrLDPC_bnProc_BG2_R13_AVX512.h"
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc_avx512/nrLDPC_bnProc_BG2_R23_AVX512.h"
|
||||
|
||||
#else
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_R13_AVX2.h"
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_R23_AVX2.h"
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_R89_AVX2.h"
|
||||
@@ -90,6 +101,7 @@
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_R13_AVX2.h"
|
||||
#include "nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_R23_AVX2.h"
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -237,7 +249,7 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (R)
|
||||
@@ -330,7 +342,7 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (R)
|
||||
@@ -380,41 +392,65 @@ if (BG==1)
|
||||
{
|
||||
case 13:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG1_R13_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG1_R13_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 23:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG1_R23_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG1_R23_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 89:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG1_R89_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG1_R89_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (R)
|
||||
{
|
||||
case 15:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG2_R15_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG2_R15_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG2_R13_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG2_R13_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
case 23:
|
||||
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG2_R23_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG2_R23_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -501,7 +537,7 @@ if (BG==1)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (R)
|
||||
@@ -592,7 +628,7 @@ if (BG==1)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (R)
|
||||
@@ -634,47 +670,72 @@ if (BG==1)
|
||||
#endif
|
||||
// nrLDPC_bnProc(p_lut, p_procBuf, Z);
|
||||
|
||||
|
||||
if (BG==1)
|
||||
{
|
||||
switch (R)
|
||||
{
|
||||
case 13:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG1_R13_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG1_R13_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 23:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG1_R23_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG1_R23_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 89:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG1_R89_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG1_R89_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (R)
|
||||
{
|
||||
case 15:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG2_R15_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG2_R15_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG2_R13_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG2_R13_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
case 23:
|
||||
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG2_R23_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG2_R23_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -684,7 +745,6 @@ if (BG==1)
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef NR_LDPC_PROFILER_DETAIL
|
||||
stop_meas(&p_profiler->bnProc);
|
||||
#endif
|
||||
@@ -777,7 +837,7 @@ if (BG==1)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (R)
|
||||
@@ -868,7 +928,7 @@ if (BG==1)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (R)
|
||||
@@ -915,47 +975,72 @@ if (BG==1)
|
||||
//nrLDPC_bnProc(p_lut, p_procBuf, Z);
|
||||
|
||||
|
||||
|
||||
if (BG==1)
|
||||
{
|
||||
switch (R)
|
||||
{
|
||||
case 13:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG1_R13_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG1_R13_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 23:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG1_R23_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG1_R23_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 89:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG1_R89_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG1_R89_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (R)
|
||||
{
|
||||
case 15:
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG2_R15_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG2_R15_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
case 13:
|
||||
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG2_R13_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG2_R13_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
case 23:
|
||||
|
||||
{
|
||||
#ifdef __AVX512BW__
|
||||
nrLDPC_bnProc_BG2_R23_AVX512(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#else
|
||||
nrLDPC_bnProc_BG2_R23_AVX2(p_procBuf->bnProcBuf, p_procBuf->bnProcBufRes,p_procBuf->llrRes, Z);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -964,7 +1049,6 @@ if (BG==1)
|
||||
}
|
||||
|
||||
|
||||
|
||||
#ifdef NR_LDPC_PROFILER_DETAIL
|
||||
stop_meas(&p_profiler->bnProc);
|
||||
#endif
|
||||
@@ -1052,5 +1136,3 @@ if (BG==1)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,27 @@
|
||||
C=gcc
|
||||
CFLAGS=-W -Wall -mavx2
|
||||
LDFLAGS=
|
||||
EXEC=bnProc_gen_avx512
|
||||
SRC= $(wildcard *.c)
|
||||
OBJ= $(SRC:.c=.o)
|
||||
|
||||
all: $(EXEC)
|
||||
|
||||
bnProc_gen_avx512: $(OBJ)
|
||||
@$(CC) -o $@ $^ $(LDFLAGS) -O2
|
||||
|
||||
|
||||
|
||||
%.o: %.c
|
||||
@$(CC) -o $@ -c $< $(CFLAGS) -I ${OPENAIR_HOME}/openair1 -g -std=c99
|
||||
|
||||
.PHONY: clean mrproper
|
||||
|
||||
clean:
|
||||
@rm -rf *.o
|
||||
|
||||
mrproper: clean
|
||||
@rm -rf $(EXEC)
|
||||
|
||||
zip:
|
||||
@tar -zcvf sauvegarde.tar.gz main.c bnProc_gen_BG1_avx512.c bnProc_gen_BG2_avx512.c Makefile
|
||||
+1185
File diff suppressed because it is too large
Load Diff
+1184
File diff suppressed because it is too large
Load Diff
Executable
BIN
Binary file not shown.
@@ -0,0 +1,26 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#define NB_R 3
|
||||
void nrLDPC_bnProc_BG1_generator_AVX512(int);
|
||||
void nrLDPC_bnProc_BG2_generator_AVX512(int);
|
||||
//void nrLDPC_bnProcPc_BG1_generator_AVX2(int);
|
||||
//void nrLDPC_bnProcPc_BG2_generator_AVX2(int);
|
||||
|
||||
int main()
|
||||
{
|
||||
int R[NB_R]={0,1,2};
|
||||
for(int i=0; i<NB_R;i++){
|
||||
|
||||
nrLDPC_bnProc_BG1_generator_AVX512(R[i]);
|
||||
nrLDPC_bnProc_BG2_generator_AVX512(R[i]);
|
||||
|
||||
// nrLDPC_bnProcPc_BG1_generator_AVX2(R[i]);
|
||||
// nrLDPC_bnProcPc_BG2_generator_AVX2(R[i]);
|
||||
|
||||
}
|
||||
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
Binary file not shown.
BIN
Binary file not shown.
-440
@@ -1,440 +0,0 @@
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
void nrLDPC_bnProc_BG2_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {
|
||||
__m256i* p_bnProcBuf;
|
||||
__m256i* p_bnProcBufRes;
|
||||
__m256i* p_llrRes;
|
||||
__m256i* p_res;
|
||||
uint32_t M, i;
|
||||
// Process group with 2 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [6912];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [6912];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [6912];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [6912];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
// Process group with 3 CNs
|
||||
// Process group with 4 CNs
|
||||
M = (2*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [7680];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [7680];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [7296];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [7296];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [7296];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [7296];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
// Process group with 5 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [10752];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [10752];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
// Process group with 6 CNs
|
||||
M = (5*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [12672];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [12672];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[180];
|
||||
p_llrRes = (__m256i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[180 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[240];
|
||||
p_llrRes = (__m256i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[240 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[300];
|
||||
p_llrRes = (__m256i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[300 + i]);
|
||||
}
|
||||
// Process group with 7 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [24192];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
// Process group with 8 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [26880];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [26880];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
// Process group with 9 CNs
|
||||
// Process group with 10 CNs
|
||||
// Process group with 11 CNs
|
||||
// Process group with 12 CNs
|
||||
// Process group with 13 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [29952];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [29952];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m256i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
// Process group with 14 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [34944];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[156];
|
||||
p_llrRes = (__m256i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[156 + i]);
|
||||
}
|
||||
// Process group with 15 CNs
|
||||
// Process group with 16 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [40320];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [40320];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[156];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[156 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[168];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[168 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[180];
|
||||
p_llrRes = (__m256i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[180 + i]);
|
||||
}
|
||||
// Process group with 17 CNs
|
||||
// Process 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
|
||||
// Process group with 29 CNs
|
||||
// Process group with 30 CNs
|
||||
}
|
||||
-799
@@ -1,799 +0,0 @@
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
void nrLDPC_bnProc_BG2_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {
|
||||
__m256i* p_bnProcBuf;
|
||||
__m256i* p_bnProcBufRes;
|
||||
__m256i* p_llrRes;
|
||||
__m256i* p_res;
|
||||
uint32_t M, i;
|
||||
// Process group with 2 CNs
|
||||
// Process group with 3 CNs
|
||||
// Process group with 4 CNs
|
||||
// Process group with 5 CNs
|
||||
M = (2*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [14592];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
// Process group with 6 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [18432];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
// Process group with 7 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [20736];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
// Process group with 8 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [23424];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
// Process group with 9 CNs
|
||||
M = (2*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [26496];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m256i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[168];
|
||||
p_llrRes = (__m256i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[168 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[192];
|
||||
p_llrRes = (__m256i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[192 + i]);
|
||||
}
|
||||
// Process group with 10 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [33408];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
// Process group with 11 CNs
|
||||
// Process group with 12 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [37248];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m256i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
// Process group with 13 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [41856];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m256i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
// Process group with 14 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [46848];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[156];
|
||||
p_llrRes = (__m256i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[156 + i]);
|
||||
}
|
||||
// Process group with 15 CNs
|
||||
// Process group with 16 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [52224];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[156];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[156 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[168];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[168 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[180];
|
||||
p_llrRes = (__m256i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[180 + i]);
|
||||
}
|
||||
// Process group with 17 CNs
|
||||
// Process group with 18 CNs
|
||||
// Process group with 19 CNs
|
||||
// Process group with 20 CNs
|
||||
// Process group with 21 CNs
|
||||
// Process group with 22 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [58368];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[156];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[156 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[168];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[168 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[180];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[180 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[192];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[192 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[204];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[204 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[216];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[216 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[228];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[228 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[240];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[240 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[252];
|
||||
p_llrRes = (__m256i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[252 + i]);
|
||||
}
|
||||
// Process group with <23 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [66816];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[156];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[156 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[168];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[168 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[180];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[180 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[192];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[192 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[204];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[204 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[216];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[216 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[228];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[228 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[240];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[240 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[252];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[252 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[264];
|
||||
p_llrRes = (__m256i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[264 + i]);
|
||||
}
|
||||
// Process 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
|
||||
}
|
||||
-153
@@ -1,153 +0,0 @@
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
void nrLDPC_bnProc_BG2_R23_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {
|
||||
__m256i* p_bnProcBuf;
|
||||
__m256i* p_bnProcBufRes;
|
||||
__m256i* p_llrRes;
|
||||
__m256i* p_res;
|
||||
uint32_t M, i;
|
||||
// Process group with 2 CNs
|
||||
M = (3*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [1152];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [1152];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [1152];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [1152];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
// Process group with 3 CNs
|
||||
M = (5*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [3456];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [3456];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [2304];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [2304];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m256i*) &llrRes [2304];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
// Process group with 4 CNs
|
||||
M = (3*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [9216];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [9216];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [4224];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [4224];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [4224];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m256i*) &llrRes [4224];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
// Process group with 5 CNs
|
||||
M = (2*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [13824];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [13824];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m256i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m256i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
// Process group with 6 CNs
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m256i*) &bnProcBuf [17664];
|
||||
p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m256i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m256i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m256i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m256i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m256i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m256i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm256_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
// Process group with 7 CNs
|
||||
// Process group with 8 CNs
|
||||
// Process group with 9 CNs
|
||||
// Process group with 10 CNs
|
||||
// Process group with 11 CNs
|
||||
// Process group with 12 CNs
|
||||
// Process group with 13 CNs
|
||||
// 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
|
||||
// Process group with 29 CNs
|
||||
// Process group with 30 CNs
|
||||
}
|
||||
-192
@@ -1,192 +0,0 @@
|
||||
static inline void nrLDPC_bnProcPc_BG2_R89_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf, uint16_t Z ) {
|
||||
__m256i ymm0, ymm1, ymmRes0, ymmRes1;
|
||||
__m128i* p_bnProcBuf;
|
||||
__m256i* p_bnProcBufRes;
|
||||
__m128i* p_llrProcBuf;
|
||||
__m256i* p_llrProcBuf256;
|
||||
__m256i* p_llrRes;
|
||||
uint32_t M ;
|
||||
// Process group with 1 CNs
|
||||
M = (0*Z + 31)>>5;
|
||||
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<M;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
|
||||
M = (3*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m128i*) &bnProcBuf [1152];
|
||||
p_llrProcBuf = (__m128i*) &llrProcBuf [1152];
|
||||
p_llrRes = (__m256i*) &llrRes [1152];
|
||||
for (int i=0,j=0;i<M;i++,j+=2) {
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]);
|
||||
ymmRes0 = _mm256_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 3 CNs
|
||||
M = (5*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m128i*) &bnProcBuf [3456];
|
||||
p_llrProcBuf = (__m128i*) &llrProcBuf [2304];
|
||||
p_llrRes = (__m256i*) &llrRes [2304];
|
||||
for (int i=0,j=0;i<M;i++,j+=2) {
|
||||
ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);
|
||||
ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]);
|
||||
ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]);
|
||||
ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]);
|
||||
ymmRes0 = _mm256_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 4 CNs
|
||||
M = (3*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m128i*) &bnProcBuf [9216];
|
||||
p_llrProcBuf = (__m128i*) &llrProcBuf [4224];
|
||||
p_llrRes = (__m256i*) &llrRes [4224];
|
||||
for (int i=0,j=0;i<M;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_llrProcBuf[j]);
|
||||
ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);
|
||||
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
|
||||
M = (2*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m128i*) &bnProcBuf [13824];
|
||||
p_llrProcBuf = (__m128i*) &llrProcBuf [5376];
|
||||
p_llrRes = (__m256i*) &llrRes [5376];
|
||||
for (int i=0,j=0;i<M;i++,j+=2) {
|
||||
ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);
|
||||
ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]);
|
||||
ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]);
|
||||
ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]);
|
||||
ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]);
|
||||
ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]);
|
||||
ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]);
|
||||
ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]);
|
||||
ymmRes0 = _mm256_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
|
||||
M = (1*Z + 31)>>5;
|
||||
p_bnProcBuf = (__m128i*) &bnProcBuf [17664];
|
||||
p_llrProcBuf = (__m128i*) &llrProcBuf [6144];
|
||||
p_llrRes = (__m256i*) &llrRes [6144];
|
||||
for (int i=0,j=0;i<M;i++,j+=2) {
|
||||
ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);
|
||||
ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]);
|
||||
ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]);
|
||||
ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]);
|
||||
ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]);
|
||||
ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]);
|
||||
ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]);
|
||||
ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]);
|
||||
ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);
|
||||
ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]);
|
||||
ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);
|
||||
ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]);
|
||||
ymmRes0 = _mm256_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
|
||||
// Process group with 8 CNs
|
||||
// Process group with 9 CNs
|
||||
// Process group with 10 CNs
|
||||
// Process group with 11 CNs
|
||||
// Process group with 12 CNs
|
||||
// Process group with 13 CNs
|
||||
// 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
|
||||
// Process group with 29 CNs
|
||||
// Process group with 30 CNs
|
||||
}
|
||||
+787
@@ -0,0 +1,787 @@
|
||||
static inline void nrLDPC_bnProc_BG1_R13_AVX512(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {
|
||||
__m512i* p_bnProcBuf;
|
||||
__m512i* p_bnProcBufRes;
|
||||
__m512i* p_llrRes;
|
||||
__m512i* p_res;
|
||||
uint32_t M, i;
|
||||
// Process group with 2 CNs
|
||||
// Process group with 3 CNs
|
||||
// Process group with 4 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [16128];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [16128];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
// Process group with 5 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [17664];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [17664];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
// Process group with 6 CNs
|
||||
M = (2*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [19584];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [19584];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [16896];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [16896];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [16896];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [16896];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [16896];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [16896];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
// Process group with 7 CNs
|
||||
M = (4*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [24192];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [24192];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
// Process group with 8 CNs
|
||||
M = (3*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [34944];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [34944];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[90];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[90 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[126];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[126 + i]);
|
||||
}
|
||||
// Process group with 9 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [44160];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [44160];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [20352];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [20352];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [20352];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [20352];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [20352];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [20352];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [20352];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [20352];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [20352];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
// Process group with 10 CNs
|
||||
M = (4*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [47616];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [47616];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[168];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[168 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[192];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[192 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[216];
|
||||
p_llrRes = (__m512i*) &llrRes [20736];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[216 + i]);
|
||||
}
|
||||
// Process group with 11 CNs
|
||||
M = (3*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [62976];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [62976];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[90];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[90 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[126];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[126 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[162];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[162 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[180];
|
||||
p_llrRes = (__m512i*) &llrRes [22272];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[180 + i]);
|
||||
}
|
||||
// Process group with 12 CNs
|
||||
M = (4*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [75648];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [75648];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[168];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[168 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[192];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[192 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[216];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[216 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[240];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[240 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[264];
|
||||
p_llrRes = (__m512i*) &llrRes [23424];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[264 + i]);
|
||||
}
|
||||
// Process group with 13 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [94080];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [94080];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [24960];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
// 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
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [99072];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [99072];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[78];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[78 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[90];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[90 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[102];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[102 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[114];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[114 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[126];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[126 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[138];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[138 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[150];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[150 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[156];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[156 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[162];
|
||||
p_llrRes = (__m512i*) &llrRes [25344];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[162 + i]);
|
||||
}
|
||||
// Process group with 29 CNs
|
||||
// Process group with 30 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [109824];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [109824];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[78];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[78 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[90];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[90 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[102];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[102 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[114];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[114 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[126];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[126 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[138];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[138 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[150];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[150 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[156];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[156 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[162];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[162 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[168];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[168 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[174];
|
||||
p_llrRes = (__m512i*) &llrRes [25728];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[174 + i]);
|
||||
}
|
||||
}
|
||||
+272
@@ -0,0 +1,272 @@
|
||||
static inline void nrLDPC_bnProc_BG1_R23_AVX512(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {
|
||||
__m512i* p_bnProcBuf;
|
||||
__m512i* p_bnProcBufRes;
|
||||
__m512i* p_llrRes;
|
||||
__m512i* p_res;
|
||||
uint32_t M, i;
|
||||
// Process group with 2 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [3456];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [3456];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [3456];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [3456];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
// Process group with 3 CNs
|
||||
M = (5*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [4224];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [4224];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [3840];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [3840];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [3840];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
// Process group with 4 CNs
|
||||
M = (3*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [9984];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [9984];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [5760];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [5760];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [5760];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [5760];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
// Process group with 5 CNs
|
||||
M = (7*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [14592];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [14592];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [6912];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [6912];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m512i*) &llrRes [6912];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[126];
|
||||
p_llrRes = (__m512i*) &llrRes [6912];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[126 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[168];
|
||||
p_llrRes = (__m512i*) &llrRes [6912];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[168 + i]);
|
||||
}
|
||||
// Process group with 6 CNs
|
||||
M = (8*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [28032];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [28032];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[144];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[144 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[192];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[192 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[240];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[240 + i]);
|
||||
}
|
||||
// Process group with 7 CNs
|
||||
// Process group with 8 CNs
|
||||
// Process group with 9 CNs
|
||||
// Process group with 10 CNs
|
||||
// Process group with 11 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [46464];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [46464];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [12672];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
// Process group with 12 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [50688];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [50688];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [13056];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
// Process group with 13 CNs
|
||||
// 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
|
||||
// Process group with 29 CNs
|
||||
// Process group with 30 CNs
|
||||
}
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
static inline void nrLDPC_bnProc_BG1_R89_AVX512(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {
|
||||
__m512i* p_bnProcBuf;
|
||||
__m512i* p_bnProcBufRes;
|
||||
__m512i* p_llrRes;
|
||||
__m512i* p_res;
|
||||
uint32_t M, i;
|
||||
// Process group with 2 CNs
|
||||
M = (3*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [384];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [384];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [384];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [384];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
// Process group with 3 CNs
|
||||
M = (21*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [2688];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [2688];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [1536];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[126];
|
||||
p_llrRes = (__m512i*) &llrRes [1536];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[126 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[252];
|
||||
p_llrRes = (__m512i*) &llrRes [1536];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[252 + i]);
|
||||
}
|
||||
// Process group with 4 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [26880];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [26880];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [9600];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
// Process group with 5 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [28416];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [28416];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [9984];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [9984];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [9984];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [9984];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [9984];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
// Process group with 6 CNs
|
||||
// Process group with 7 CNs
|
||||
// Process group with 8 CNs
|
||||
// Process group with 9 CNs
|
||||
// Process group with 10 CNs
|
||||
// Process group with 11 CNs
|
||||
// Process group with 12 CNs
|
||||
// Process group with 13 CNs
|
||||
// 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
|
||||
// Process group with 29 CNs
|
||||
// Process group with 30 CNs
|
||||
}
|
||||
+440
@@ -0,0 +1,440 @@
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
void nrLDPC_bnProc_BG2_R13_AVX512(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {
|
||||
__m512i* p_bnProcBuf;
|
||||
__m512i* p_bnProcBufRes;
|
||||
__m512i* p_llrRes;
|
||||
__m512i* p_res;
|
||||
uint32_t M, i;
|
||||
// Process group with 2 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [6912];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [6912];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [6912];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [6912];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
// Process group with 3 CNs
|
||||
// Process group with 4 CNs
|
||||
M = (2*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [7680];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [7680];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [7296];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [7296];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [7296];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [7296];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
// Process group with 5 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [10752];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [10752];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [8064];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
// Process group with 6 CNs
|
||||
M = (5*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [12672];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [12672];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[90];
|
||||
p_llrRes = (__m512i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[90 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m512i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[150];
|
||||
p_llrRes = (__m512i*) &llrRes [8448];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[150 + i]);
|
||||
}
|
||||
// Process group with 7 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [24192];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [24192];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [10368];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
// Process group with 8 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [26880];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [26880];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [10752];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
// Process group with 9 CNs
|
||||
// Process group with 10 CNs
|
||||
// Process group with 11 CNs
|
||||
// Process group with 12 CNs
|
||||
// Process group with 13 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [29952];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [29952];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [11136];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
// Process group with 14 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [34944];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [34944];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[78];
|
||||
p_llrRes = (__m512i*) &llrRes [11520];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[78 + i]);
|
||||
}
|
||||
// Process group with 15 CNs
|
||||
// Process group with 16 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [40320];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [40320];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[78];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[78 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[90];
|
||||
p_llrRes = (__m512i*) &llrRes [11904];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[90 + i]);
|
||||
}
|
||||
// Process group with 17 CNs
|
||||
// Process 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
|
||||
// Process group with 29 CNs
|
||||
// Process group with 30 CNs
|
||||
}
|
||||
+799
@@ -0,0 +1,799 @@
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
void nrLDPC_bnProc_BG2_R15_AVX512(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {
|
||||
__m512i* p_bnProcBuf;
|
||||
__m512i* p_bnProcBufRes;
|
||||
__m512i* p_llrRes;
|
||||
__m512i* p_res;
|
||||
uint32_t M, i;
|
||||
// Process group with 2 CNs
|
||||
// Process group with 3 CNs
|
||||
// Process group with 4 CNs
|
||||
// Process group with 5 CNs
|
||||
M = (2*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [14592];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [14592];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [14592];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
// Process group with 6 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [18432];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [18432];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [15360];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
// Process group with 7 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [20736];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [20736];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [15744];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
// Process group with 8 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [23424];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [23424];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [16128];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
// Process group with 9 CNs
|
||||
M = (2*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [26496];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [26496];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m512i*) &llrRes [16512];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
// Process group with 10 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [33408];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [33408];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [17280];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
// Process group with 11 CNs
|
||||
// Process group with 12 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [37248];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [37248];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [17664];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
// Process group with 13 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [41856];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [41856];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [18048];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
// Process group with 14 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [46848];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [46848];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[78];
|
||||
p_llrRes = (__m512i*) &llrRes [18432];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[78 + i]);
|
||||
}
|
||||
// Process group with 15 CNs
|
||||
// Process group with 16 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [52224];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [52224];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[78];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[78 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[90];
|
||||
p_llrRes = (__m512i*) &llrRes [18816];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[90 + i]);
|
||||
}
|
||||
// Process group with 17 CNs
|
||||
// Process group with 18 CNs
|
||||
// Process group with 19 CNs
|
||||
// Process group with 20 CNs
|
||||
// Process group with 21 CNs
|
||||
// Process group with 22 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [58368];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [58368];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[78];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[78 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[90];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[90 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[102];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[102 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[114];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[114 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[126];
|
||||
p_llrRes = (__m512i*) &llrRes [19200];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[126 + i]);
|
||||
}
|
||||
// Process group with <23 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [66816];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [66816];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[42];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[42 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[66];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[66 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[72];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[72 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[78];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[78 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[84];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[84 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[90];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[90 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[96];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[96 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[102];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[102 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[108];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[108 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[114];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[114 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[120];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[120 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[126];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[126 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[132];
|
||||
p_llrRes = (__m512i*) &llrRes [19584];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[132 + i]);
|
||||
}
|
||||
// Process 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
|
||||
}
|
||||
+153
@@ -0,0 +1,153 @@
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
void nrLDPC_bnProc_BG2_R23_AVX512(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes, uint16_t Z ) {
|
||||
__m512i* p_bnProcBuf;
|
||||
__m512i* p_bnProcBufRes;
|
||||
__m512i* p_llrRes;
|
||||
__m512i* p_res;
|
||||
uint32_t M, i;
|
||||
// Process group with 2 CNs
|
||||
M = (3*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [1152];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [1152];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [1152];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [1152];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
// Process group with 3 CNs
|
||||
M = (5*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [3456];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [3456];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [2304];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [2304];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[60];
|
||||
p_llrRes = (__m512i*) &llrRes [2304];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[60 + i]);
|
||||
}
|
||||
// Process group with 4 CNs
|
||||
M = (3*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [9216];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [9216];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [4224];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [4224];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [4224];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[54];
|
||||
p_llrRes = (__m512i*) &llrRes [4224];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[54 + i]);
|
||||
}
|
||||
// Process group with 5 CNs
|
||||
M = (2*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [13824];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [13824];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[36];
|
||||
p_llrRes = (__m512i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[36 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[48];
|
||||
p_llrRes = (__m512i*) &llrRes [5376];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[48 + i]);
|
||||
}
|
||||
// Process group with 6 CNs
|
||||
M = (1*Z + 63)>>6;
|
||||
p_bnProcBuf = (__m512i*) &bnProcBuf [17664];
|
||||
p_bnProcBufRes = (__m512i*) &bnProcBufRes [17664];
|
||||
p_res = &p_bnProcBufRes[0];
|
||||
p_llrRes = (__m512i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[0 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[6];
|
||||
p_llrRes = (__m512i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[6 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[12];
|
||||
p_llrRes = (__m512i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[12 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[18];
|
||||
p_llrRes = (__m512i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[18 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[24];
|
||||
p_llrRes = (__m512i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[24 + i]);
|
||||
}
|
||||
p_res = &p_bnProcBufRes[30];
|
||||
p_llrRes = (__m512i*) &llrRes [6144];
|
||||
for (i=0;i<M;i++) {
|
||||
p_res[i] = _mm512_subs_epi8(p_llrRes[i], p_bnProcBuf[30 + i]);
|
||||
}
|
||||
// Process group with 7 CNs
|
||||
// Process group with 8 CNs
|
||||
// Process group with 9 CNs
|
||||
// Process group with 10 CNs
|
||||
// Process group with 11 CNs
|
||||
// Process group with 12 CNs
|
||||
// Process group with 13 CNs
|
||||
// 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
|
||||
// Process group with 29 CNs
|
||||
// Process group with 30 CNs
|
||||
}
|
||||
-2346
File diff suppressed because it is too large
Load Diff
-2097
File diff suppressed because it is too large
Load Diff
-1177
File diff suppressed because it is too large
Load Diff
-777
@@ -1,777 +0,0 @@
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
static inline void nrLDPC_cnProc_BG2_R13_AVX2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z) {
|
||||
//Process group with 3 BNs
|
||||
__m256i ymm0, min, sgn,ones,maxLLR;
|
||||
ones = _mm256_set1_epi8((char)1);
|
||||
maxLLR = _mm256_set1_epi8((char)127);
|
||||
uint32_t M;
|
||||
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
|
||||
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
|
||||
//Process group with 4 BNs
|
||||
M = (8*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[456+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[696+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[936+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[216+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[216+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[696+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[936+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[456+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[216+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[456+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[936+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[696+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[216+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[456+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[696+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[936+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 5 BNs
|
||||
M = (7*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1284+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1392+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1500+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1608+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1176+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1176+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1392+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1500+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1608+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1284+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1176+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1284+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1500+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1608+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1392+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1176+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1284+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1392+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1608+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1500+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1176+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1284+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1392+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1500+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1608+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 6 BNs
|
||||
M = (3*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1716+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1752+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1788+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1824+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1860+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1896+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 8 BNs
|
||||
M = (2*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1932+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1956+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1980+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2004+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2028+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2052+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2076+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2100+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 10 BNs
|
||||
M = (2*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2124+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2148+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2172+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2196+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2220+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2244+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2268+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2292+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2316+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2340+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
}
|
||||
-832
@@ -1,832 +0,0 @@
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
static inline void nrLDPC_cnProc_BG2_R15_AVX2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z) {
|
||||
//Process group with 3 BNs
|
||||
__m256i ymm0, min, sgn,ones,maxLLR;
|
||||
ones = _mm256_set1_epi8((char)1);
|
||||
maxLLR = _mm256_set1_epi8((char)127);
|
||||
uint32_t M;
|
||||
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
|
||||
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
|
||||
M = (6*Z + 31)>>5;
|
||||
for (int i=0;i<M;i+=2) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[72+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[144+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[0+i] = _mm256_sign_epi8(min, sgn);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[73+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[145+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i+=2) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[0+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[144+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[72+i] = _mm256_sign_epi8(min, sgn);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[145+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[73+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i+=2) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[0+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[72+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[144+i] = _mm256_sign_epi8(min, sgn);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[73+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[145+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 4 BNs
|
||||
M = (20*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[456+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[696+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[936+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[216+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[216+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[696+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[936+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[456+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[216+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[456+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[936+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[696+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[216+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[456+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[696+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[936+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 5 BNs
|
||||
M = (9*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1284+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1392+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1500+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1608+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1176+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1176+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1392+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1500+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1608+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1284+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1176+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1284+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1500+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1608+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1392+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1176+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1284+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1392+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1608+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1500+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1176+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1284+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1392+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1500+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1608+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 6 BNs
|
||||
M = (3*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1716+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1752+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1788+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1824+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1860+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1896+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 8 BNs
|
||||
M = (2*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1932+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1956+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1980+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2004+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2028+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2052+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2076+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2100+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 10 BNs
|
||||
M = (2*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2124+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2148+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2172+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2196+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2220+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2244+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2268+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2292+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2316+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2340+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
}
|
||||
-696
@@ -1,696 +0,0 @@
|
||||
#include <stdint.h>
|
||||
#include <immintrin.h>
|
||||
static inline void nrLDPC_cnProc_BG2_R23_AVX2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z) {
|
||||
//Process group with 3 BNs
|
||||
__m256i ymm0, min, sgn,ones,maxLLR;
|
||||
ones = _mm256_set1_epi8((char)1);
|
||||
maxLLR = _mm256_set1_epi8((char)127);
|
||||
uint32_t M;
|
||||
int8_t* cnProcBuf = p_procBuf->cnProcBuf;
|
||||
int8_t* cnProcBufRes = p_procBuf->cnProcBufRes;
|
||||
//Process group with 4 BNs
|
||||
M = (1*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[456+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[696+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[936+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[216+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[216+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[696+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[936+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[456+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[216+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[456+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[936+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[696+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[216+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[456+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[696+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[936+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 5 BNs
|
||||
//Process group with 6 BNs
|
||||
M = (2*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1716+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1752+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1788+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1824+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1896+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1860+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1716+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1752+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1788+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1824+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1860+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1896+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 8 BNs
|
||||
M = (2*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1932+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1956+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[1980+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2004+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2028+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2052+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2100+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2076+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1932+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1956+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[1980+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2004+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2028+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2052+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2076+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2100+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
//Process group with 10 BNs
|
||||
M = (2*Z + 31)>>5;
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2124+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2148+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2172+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2196+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2220+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2244+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2268+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2292+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2340+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2316+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
for (int i=0;i<M;i++) {
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2124+i];
|
||||
sgn = _mm256_sign_epi8(ones, ymm0);
|
||||
min = _mm256_abs_epi8(ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2148+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2172+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2196+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2220+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2244+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2268+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2292+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
ymm0 = ((__m256i*)cnProcBuf)[2316+i];
|
||||
min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0));
|
||||
sgn = _mm256_sign_epi8(sgn, ymm0);
|
||||
min = _mm256_min_epu8(min, maxLLR);
|
||||
((__m256i*)cnProcBufRes)[2340+i] = _mm256_sign_epi8(min, sgn);
|
||||
}
|
||||
}
|
||||
-1040
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user