feat(cnProc_gen_BG1_128): Put back small change in 128-bit SIMD code generator for LDPC decoder (cnProc).
Avoid the use of simde_mm_sign_epi8 which is inefficient on aarch64. Decoding times are significantly improved on aarch64. Co-authored-by: Romain Beurdouche <romain.beurdouche@eurecom.fr>
This commit is contained in:
committed by
Romain Beurdouche
co-authored by
Romain Beurdouche
parent
a4c950774b
commit
33078f9e3d
+83
-9
@@ -24,7 +24,9 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "../../nrLDPCdecoder_defs.h"
|
#include "../../nrLDPCdecoder_defs.h"
|
||||||
|
|
||||||
#define AVOID_MM256_SIGN 1
|
#ifdef __aarch64__
|
||||||
|
#define AVOID_SIGN 1
|
||||||
|
#endif
|
||||||
#define DROP_MAXLLR 1
|
#define DROP_MAXLLR 1
|
||||||
void nrLDPC_cnProc_BG1_generator_128(const char* dir, int R)
|
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];
|
// 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);
|
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);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n");
|
||||||
|
#endif
|
||||||
// min = simde_mm_abs_epi8(ymm0);
|
// min = simde_mm_abs_epi8(ymm0);
|
||||||
fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n");
|
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");
|
fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n");
|
||||||
|
|
||||||
// sgn = simde_mm_sign_epi8(sgn, ymm0);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(sgn, ymm0);\n");
|
||||||
|
#endif
|
||||||
// Store result
|
// Store result
|
||||||
// min = simde_mm_min_epu8(min, maxLLR); // 128 in epi8 is -127
|
// min = simde_mm_min_epu8(min, maxLLR); // 128 in epi8 is -127
|
||||||
#ifndef DROP_MAXLLR
|
#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];
|
// 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);
|
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);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n");
|
||||||
|
#endif
|
||||||
// min = simde_mm_abs_epi8(ymm0);
|
// min = simde_mm_abs_epi8(ymm0);
|
||||||
fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n");
|
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");
|
fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n");
|
||||||
|
|
||||||
// sgn = simde_mm_sign_epi8(sgn, ymm0);
|
// 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
|
// 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];
|
// 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);
|
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);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n");
|
||||||
|
#endif
|
||||||
// min = simde_mm_abs_epi8(ymm0);
|
// min = simde_mm_abs_epi8(ymm0);
|
||||||
fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n");
|
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");
|
fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n");
|
||||||
|
|
||||||
// sgn = simde_mm_sign_epi8(sgn, ymm0);
|
// 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
|
// 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];
|
// 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);
|
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);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n");
|
||||||
|
#endif
|
||||||
// min = simde_mm_abs_epi8(ymm0);
|
// min = simde_mm_abs_epi8(ymm0);
|
||||||
fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n");
|
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");
|
fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n");
|
||||||
|
|
||||||
// sgn = simde_mm_sign_epi8(sgn, ymm0);
|
// 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
|
// 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];
|
// 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);
|
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);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n");
|
||||||
|
#endif
|
||||||
// min = simde_mm_abs_epi8(ymm0);
|
// min = simde_mm_abs_epi8(ymm0);
|
||||||
fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n");
|
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");
|
fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n");
|
||||||
|
|
||||||
// sgn = simde_mm_sign_epi8(sgn, ymm0);
|
// 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
|
// 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];
|
// 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);
|
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);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n");
|
||||||
|
#endif
|
||||||
// min = simde_mm_abs_epi8(ymm0);
|
// min = simde_mm_abs_epi8(ymm0);
|
||||||
fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n");
|
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");
|
fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n");
|
||||||
|
|
||||||
// sgn = simde_mm_sign_epi8(sgn, ymm0);
|
// 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
|
// 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];
|
// 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);
|
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);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n");
|
||||||
|
#endif
|
||||||
// min = simde_mm_abs_epi8(ymm0);
|
// min = simde_mm_abs_epi8(ymm0);
|
||||||
fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n");
|
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");
|
fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n");
|
||||||
|
|
||||||
// sgn = simde_mm_sign_epi8(sgn, ymm0);
|
// 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
|
// 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];
|
// 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);
|
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);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n");
|
||||||
|
#endif
|
||||||
// min = simde_mm_abs_epi8(ymm0);
|
// min = simde_mm_abs_epi8(ymm0);
|
||||||
fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n");
|
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");
|
fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n");
|
||||||
|
|
||||||
// sgn = simde_mm_sign_epi8(sgn, ymm0);
|
// 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
|
// 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];
|
// 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);
|
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);
|
// 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");
|
fprintf(fd," sgn = simde_mm_sign_epi8(ones, ymm0);\n");
|
||||||
|
#endif
|
||||||
// min = simde_mm_abs_epi8(ymm0);
|
// min = simde_mm_abs_epi8(ymm0);
|
||||||
fprintf(fd," min = simde_mm_abs_epi8(ymm0);\n");
|
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");
|
fprintf(fd," min = simde_mm_min_epu8(min, simde_mm_abs_epi8(ymm0));\n");
|
||||||
|
|
||||||
// sgn = simde_mm_sign_epi8(sgn, ymm0);
|
// 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
|
// Store result
|
||||||
|
|||||||
Reference in New Issue
Block a user