diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG1_128.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG1_128.c index e4d971472f..9e3d212697 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG1_128.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG1_128.c @@ -24,7 +24,9 @@ #include #include "../../nrLDPCdecoder_defs.h" -#define AVOID_MM256_SIGN 1 +#ifdef __aarch64__ +#define AVOID_SIGN 1 +#endif #define DROP_MAXLLR 1 void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) { @@ -126,7 +128,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; fprintf(fd," ymm0 = ((simde__m128i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>4)+lut_idxCnProcG3[j][0]*2); // sgn = simde_mm_sign_epi8(ones, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(ones, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n"); +#endif // min = simde_mm_abs_epi8(ymm0); fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n"); @@ -138,7 +144,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n"); // sgn = simde_mm_sign_epi8(sgn, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(sgn, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#endif // Store result // min = simde_mm_min_epu8(min, maxLLR); // 128 in epi8 is -127 #ifndef DROP_MAXLLR @@ -185,7 +195,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; fprintf(fd," ymm0 = ((simde__m128i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[1]>>4)+lut_idxCnProcG4[j][0]*2); // sgn = simde_mm_sign_epi8(ones, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(ones, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n"); +#endif // min = simde_mm_abs_epi8(ymm0); fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n"); @@ -199,7 +213,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n"); // sgn = simde_mm_sign_epi8(sgn, ymm0); - fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(sgn, ymm0);\n"); +#else + fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#endif } // Store result @@ -252,7 +270,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; fprintf(fd," ymm0 = ((simde__m128i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[2]>>4)+lut_idxCnProcG5[j][0]*2); // sgn = simde_mm_sign_epi8(ones, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(ones, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n"); +#endif // min = simde_mm_abs_epi8(ymm0); fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n"); @@ -266,7 +288,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n"); // sgn = simde_mm_sign_epi8(sgn, ymm0); - fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(sgn, ymm0);\n"); +#else + fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#endif } // Store result @@ -319,7 +345,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; fprintf(fd," ymm0 = ((simde__m128i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[3]>>4)+lut_idxCnProcG6[j][0]*2); // sgn = simde_mm_sign_epi8(ones, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(ones, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n"); +#endif // min = simde_mm_abs_epi8(ymm0); fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n"); @@ -333,7 +363,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n"); // sgn = simde_mm_sign_epi8(sgn, ymm0); - fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(sgn, ymm0);\n"); +#else + fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#endif } // Store result @@ -389,7 +423,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; fprintf(fd," ymm0 = ((simde__m128i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[4]>>4)+lut_idxCnProcG7[j][0]*2); // sgn = simde_mm_sign_epi8(ones, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(ones, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n"); +#endif // min = simde_mm_abs_epi8(ymm0); fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n"); @@ -403,7 +441,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n"); // sgn = simde_mm_sign_epi8(sgn, ymm0); - fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(sgn, ymm0);\n"); +#else + fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#endif } // Store result @@ -460,7 +502,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; fprintf(fd," ymm0 = ((simde__m128i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[5]>>4)+lut_idxCnProcG8[j][0]*2); // sgn = simde_mm_sign_epi8(ones, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(ones, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n"); +#endif // min = simde_mm_abs_epi8(ymm0); fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n"); @@ -474,7 +520,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n"); // sgn = simde_mm_sign_epi8(sgn, ymm0); - fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(sgn, ymm0);\n"); +#else + fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#endif } // Store result @@ -531,7 +581,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; fprintf(fd," ymm0 = ((simde__m128i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[6]>>4)+lut_idxCnProcG9[j][0]*2); // sgn = simde_mm_sign_epi8(ones, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(ones, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n"); +#endif // min = simde_mm_abs_epi8(ymm0); fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n"); @@ -545,7 +599,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n"); // sgn = simde_mm_sign_epi8(sgn, ymm0); - fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(sgn, ymm0);\n"); +#else + fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#endif } // Store result @@ -603,7 +661,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; fprintf(fd," ymm0 = ((simde__m128i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[7]>>4)+lut_idxCnProcG10[j][0]*2); // sgn = simde_mm_sign_epi8(ones, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(ones, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n"); +#endif // min = simde_mm_abs_epi8(ymm0); fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n"); @@ -617,7 +679,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n"); // sgn = simde_mm_sign_epi8(sgn, ymm0); - fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(sgn, ymm0);\n"); +#else + fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#endif } // Store result @@ -678,7 +744,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) // ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; fprintf(fd," ymm0 = ((simde__m128i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[8]>>4)+lut_idxCnProcG19[j][0]*2); // sgn = simde_mm_sign_epi8(ones, ymm0); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(ones, ymm0);\n"); +#else fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n"); +#endif // min = simde_mm_abs_epi8(ymm0); fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n"); @@ -692,7 +762,11 @@ void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R) fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n"); // sgn = simde_mm_sign_epi8(sgn, ymm0); - fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#ifdef AVOID_SIGN + fprintf(fd," sgn = simde_mm_xor_si128(sgn, ymm0);\n"); +#else + fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n"); +#endif } // Store result