diff --git a/openair1/PHY/MODULATION/nr_modulation.c b/openair1/PHY/MODULATION/nr_modulation.c index 40de9351d6..84f7e356e7 100644 --- a/openair1/PHY/MODULATION/nr_modulation.c +++ b/openair1/PHY/MODULATION/nr_modulation.c @@ -119,49 +119,33 @@ const char nr_W_4l_4p[5][4][4] = { void nr_modulation(const uint32_t *in, uint32_t length, uint16_t mod_order, int16_t *out) { - uint16_t mask = ((1 << mod_order) - 1); - int32_t *nr_mod_table32; + const uint16_t mask = ((1 << mod_order) - 1); int32_t *out32 = (int32_t *)out; const uint8_t *in_bytes = (const uint8_t *)in; const uint64_t *in64 = (const uint64_t *)in; int64_t *out64 = (int64_t *)out; uint32_t i = 0; -#if defined(__SSE2__) - simde__m128i *nr_mod_table128; - simde__m128i *out128; -#endif - LOG_D(PHY, "nr_modulation: length %d, mod_order %d\n", length, mod_order); switch (mod_order) { -#if defined(__SSE2__) - case 2: - nr_mod_table128 = (simde__m128i *)nr_qpsk_byte_mod_table; - out128 = (simde__m128i *)out; + case 2: { + simde__m128i *nr_mod_table128 = (simde__m128i *)nr_qpsk_byte_mod_table; + simde__m128i *out128 = (simde__m128i *)out; for (i = 0; i < length / 8; i++) out128[i] = nr_mod_table128[in_bytes[i]]; // the bits that are left out i = i * 8 / 2; - nr_mod_table32 = (int32_t *)nr_qpsk_mod_table; + int32_t *nr_mod_table32 = (int32_t *)nr_qpsk_mod_table; while (i < length / 2) { const int idx = ((in_bytes[(i * 2) / 8] >> ((i * 2) & 0x7)) & mask); out32[i] = nr_mod_table32[idx]; i++; } + } return; -#else - case 2: - nr_mod_table32 = (int32_t *)nr_qpsk_mod_table; - for (i = 0; i < length / mod_order; i++) { - const int idx = ((in[i * 2 / 32] >> ((i * 2) & 0x1f)) & mask); - out32[i] = nr_mod_table32[idx]; - } - return; -#endif case 4: - out64 = (int64_t *)out; for (i = 0; i < length / 8; i++) out64[i] = nr_16qam_byte_mod_table[in_bytes[i]]; // the bits that are left out @@ -234,10 +218,11 @@ void nr_modulation(const uint32_t *in, uint32_t length, uint16_t mod_order, int1 } return; - case 8: - nr_mod_table32 = (int32_t *)nr_256qam_mod_table; + case 8: { + int32_t *nr_mod_table32 = (int32_t *)nr_256qam_mod_table; for (i = 0; i < length / 8; i++) out32[i] = nr_mod_table32[in_bytes[i]]; + } return; default: diff --git a/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c b/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c index 76a89f670b..732d531db4 100644 --- a/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c +++ b/openair1/PHY/NR_REFSIG/nr_gen_mod_table.c @@ -22,15 +22,11 @@ #include "nr_refsig.h" #include "nr_mod_table.h" c16_t nr_qpsk_mod_table[4]; - +simde__m128i nr_qpsk_byte_mod_table[256]; int32_t nr_16qam_mod_table[16]; -simde__m128i nr_qpsk_byte_mod_table[2048]; - -int64_t nr_16qam_byte_mod_table[1024]; - +int64_t nr_16qam_byte_mod_table[256]; int64_t nr_64qam_mod_table[4096]; - -int32_t nr_256qam_mod_table[512]; +int32_t nr_256qam_mod_table[256]; void nr_generate_modulation_table() { float sqrt2 = 0.70711; diff --git a/openair1/PHY/NR_REFSIG/nr_mod_table.h b/openair1/PHY/NR_REFSIG/nr_mod_table.h index 517d86b762..81969d9a40 100644 --- a/openair1/PHY/NR_REFSIG/nr_mod_table.h +++ b/openair1/PHY/NR_REFSIG/nr_mod_table.h @@ -29,15 +29,12 @@ #define NR_MOD_TABLE_QAM256_OFFSET 87 extern c16_t nr_qpsk_mod_table[4]; +extern simde__m128i nr_qpsk_byte_mod_table[256]; extern int32_t nr_16qam_mod_table[16]; -#if defined(__SSE2__) -extern simde__m128i nr_qpsk_byte_mod_table[2048]; -#endif - -extern int64_t nr_16qam_byte_mod_table[1024]; +extern int64_t nr_16qam_byte_mod_table[256]; extern int64_t nr_64qam_mod_table[4096]; -extern int32_t nr_256qam_mod_table[512]; +extern int32_t nr_256qam_mod_table[256]; #endif