diff --git a/common/utils/CMakeLists.txt b/common/utils/CMakeLists.txt index fc113ffa46..948c9f8301 100644 --- a/common/utils/CMakeLists.txt +++ b/common/utils/CMakeLists.txt @@ -16,7 +16,7 @@ add_subdirectory(nr) add_subdirectory(LOG) add_subdirectory(threadPool) add_subdirectory(time_manager) -add_library(utils utils.c system.c time_meas.c time_stat.c tuntap_if.c reverse_bits.c fsn.c) +add_library(utils utils.c system.c time_meas.c time_stat.c tuntap_if.c bits.c fsn.c) target_include_directories(utils PUBLIC .) target_link_libraries(utils PRIVATE ${T_LIB}) add_subdirectory(barrier) diff --git a/common/utils/reverse_bits.c b/common/utils/bits.c similarity index 99% rename from common/utils/reverse_bits.c rename to common/utils/bits.c index 7fc1d27254..d329660821 100644 --- a/common/utils/reverse_bits.c +++ b/common/utils/bits.c @@ -2,7 +2,7 @@ * SPDX-License-Identifier: LicenseRef-CSSL-1.0 */ -#include "reverse_bits.h" +#include "bits.h" // we avoid assertions.h as it necessitates othe dependencies (e.g., exit_function) #include #include diff --git a/common/utils/bits.h b/common/utils/bits.h new file mode 100644 index 0000000000..4d266ec53a --- /dev/null +++ b/common/utils/bits.h @@ -0,0 +1,34 @@ +/* + * SPDX-License-Identifier: LicenseRef-CSSL-1.0 + */ + +#ifndef BITS_H_ +#define BITS_H_ + +#include +#include +#include "assertions.h" + +uint64_t reverse_bits(uint64_t in, int n_bits); +void reverse_bits_u8(uint8_t const* in, size_t sz, uint8_t* out); + +static inline int count_bits(uint8_t *arr, int sz) +{ + AssertFatal(sz % sizeof(int) == 0, "to implement if needed\n"); + int ret = 0; + for (uint *ptr = (uint *)arr; (uint8_t *)ptr < arr + sz; ptr++) + ret += __builtin_popcount(*ptr); + return ret; +} + +static __attribute__((always_inline)) inline int count_bits64(uint64_t v) +{ + return __builtin_popcountll(v); +} + +static __attribute__((always_inline)) inline int count_bits64_with_mask(uint64_t v, int start, int num) +{ + uint64_t mask = ((1LL << num) - 1) << start; + return count_bits64(v & mask); +} +#endif /* BITS_H_ */ diff --git a/common/utils/nr/nr_common.h b/common/utils/nr/nr_common.h index 228e51feb2..078da2158c 100644 --- a/common/utils/nr/nr_common.h +++ b/common/utils/nr/nr_common.h @@ -262,28 +262,7 @@ static inline int get_num_dmrs(uint16_t dmrs_mask ) return(num_dmrs); } -static inline int count_bits(uint8_t *arr, int sz) -{ - AssertFatal(sz % sizeof(int) == 0, "to implement if needed\n"); - int ret = 0; - for (uint *ptr = (uint *)arr; (uint8_t *)ptr < arr + sz; ptr++) - ret += __builtin_popcount(*ptr); - return ret; -} - -static __attribute__((always_inline)) inline int count_bits64(uint64_t v) -{ - return __builtin_popcountll(v); -} - -static __attribute__((always_inline)) inline int count_bits64_with_mask(uint64_t v, int start, int num) -{ - uint64_t mask = ((1LL << num) - 1) << start; - return count_bits64(v & mask); -} - void warn_higher_threequarter_fs(const int n_rb, const int mu); - uint64_t from_nrarfcn(int nr_bandP, uint8_t scs_index, uint32_t dl_nrarfcn); uint32_t to_nrarfcn(uint64_t dl_CarrierFreq); uint8_t set_ssb_case(int scs, int nr_band); diff --git a/common/utils/reverse_bits.h b/common/utils/reverse_bits.h deleted file mode 100644 index 697ed61052..0000000000 --- a/common/utils/reverse_bits.h +++ /dev/null @@ -1,14 +0,0 @@ -/* - * SPDX-License-Identifier: LicenseRef-CSSL-1.0 - */ - -#ifndef REVERSE_BITS_H_ -#define REVERSE_BITS_H_ - -#include -#include - -uint64_t reverse_bits(uint64_t in, int n_bits); -void reverse_bits_u8(uint8_t const* in, size_t sz, uint8_t* out); - -#endif /* REVERSE_BITS_H_ */ diff --git a/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_aal/nrLDPC_coding_aal.c b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_aal/nrLDPC_coding_aal.c index 534d103929..e4ceb359c1 100644 --- a/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_aal/nrLDPC_coding_aal.c +++ b/openair1/PHY/CODING/nrLDPC_coding/nrLDPC_coding_aal/nrLDPC_coding_aal.c @@ -5,7 +5,7 @@ #include "../nrLDPC_coding_interface.h" #include "nrLDPC_coding_aal.h" #include "PHY/sse_intrin.h" -#include "reverse_bits.h" +#include "bits.h" #include #include "common/config/config_paramdesc.h" #include "common/config/config_userapi.h" diff --git a/openair1/PHY/CODING/nrPolar_tools/nr_polar_procedures.c b/openair1/PHY/CODING/nrPolar_tools/nr_polar_procedures.c index 9379a507e2..4db0e876b9 100644 --- a/openair1/PHY/CODING/nrPolar_tools/nr_polar_procedures.c +++ b/openair1/PHY/CODING/nrPolar_tools/nr_polar_procedures.c @@ -3,7 +3,7 @@ */ #include "PHY/CODING/nrPolar_tools/nr_polar_defs.h" -#include "reverse_bits.h" +#include "bits.h" #include #include #include diff --git a/openair1/PHY/NR_REFSIG/dmrs_nr.c b/openair1/PHY/NR_REFSIG/dmrs_nr.c index 0e8246cce1..2f04026a70 100644 --- a/openair1/PHY/NR_REFSIG/dmrs_nr.c +++ b/openair1/PHY/NR_REFSIG/dmrs_nr.c @@ -17,6 +17,7 @@ #include "PHY/NR_REFSIG/dmrs_nr.h" #include "log.h" #include "nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h" +#include "bits.h" uint8_t allowed_xlsch_re_in_dmrs_symbol(uint16_t k, uint16_t start_sc, diff --git a/openair1/PHY/NR_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_TRANSPORT/nr_pbch.c index 70d43ed8aa..ccc4eb0405 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_pbch.c +++ b/openair1/PHY/NR_TRANSPORT/nr_pbch.c @@ -10,7 +10,7 @@ #include "PHY/NR_TRANSPORT/nr_transport_proto.h" #include "PHY/sse_intrin.h" #include "executables/softmodem-common.h" -#include "reverse_bits.h" +#include "bits.h" #include "openair1/PHY/NR_REFSIG/nr_refsig.h" #include "openair1/PHY/NR_REFSIG/nr_mod_table.h" #include "openair1/PHY/TOOLS/tools_defs.h" diff --git a/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c b/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c index 9cb6e22c03..f907362ad9 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c +++ b/openair1/PHY/NR_TRANSPORT/nr_ulsch_decoding.c @@ -19,6 +19,7 @@ #include "PHY/NR_TRANSPORT/nr_dlsch.h" #include "SCHED_NR/sched_nr.h" #include "defs.h" +#include "bits.h" #include "common/utils/LOG/log.h" #include // #define DEBUG_ULSCH_DECODING diff --git a/openair1/PHY/NR_TRANSPORT/pucch_rx.c b/openair1/PHY/NR_TRANSPORT/pucch_rx.c index fd6bd8ea42..0063ac9fda 100644 --- a/openair1/PHY/NR_TRANSPORT/pucch_rx.c +++ b/openair1/PHY/NR_TRANSPORT/pucch_rx.c @@ -25,7 +25,7 @@ #include "nfapi/oai_integration/vendor_ext.h" #include "nfapi/oai_integration/vendor_ext.h" #include "SCHED_NR/sched_nr.h" -#include "reverse_bits.h" +#include "bits.h" #include "T.h" #include "nr_phy_common.h" diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c index 7e1d6ccb92..89f868b210 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c @@ -14,7 +14,7 @@ #include #include "PHY/nr_phy_common/inc/nr_phy_common.h" #include "openair1/PHY/NR_REFSIG/nr_refsig.h" -#include "reverse_bits.h" +#include "bits.h" #include "instrumentation.h" //#define DEBUG_PBCH //#define DEBUG_PBCH_ENCODING diff --git a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c index 7ae1a04dbf..ad0c29de1e 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c @@ -15,7 +15,7 @@ #include "PHY/NR_TRANSPORT/nr_transport_common_proto.h" #include #include "common/utils/LOG/log.h" -#include "reverse_bits.h" +#include "bits.h" #include "openair1/PHY/NR_REFSIG/nr_refsig.h" #include "T.h" diff --git a/openair1/PHY/nr_phy_common/src/nr_phy_common.c b/openair1/PHY/nr_phy_common/src/nr_phy_common.c index 5e71d0b285..f7e6592b0e 100644 --- a/openair1/PHY/nr_phy_common/src/nr_phy_common.c +++ b/openair1/PHY/nr_phy_common/src/nr_phy_common.c @@ -3,6 +3,7 @@ */ #include "nr_phy_common.h" +#include "bits.h" #include #ifdef __aarch64__ #define USE_128BIT diff --git a/openair1/SIMULATION/NR_PHY/ulschsim.c b/openair1/SIMULATION/NR_PHY/ulschsim.c index c5b8723908..1eef6fda51 100644 --- a/openair1/SIMULATION/NR_PHY/ulschsim.c +++ b/openair1/SIMULATION/NR_PHY/ulschsim.c @@ -31,6 +31,7 @@ #include "openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h" #include "executables/nr-uesoftmodem.h" #include "nfapi/oai_integration/vendor_ext.h" +#include "bits.h" //#define DEBUG_NR_ULSCHSIM diff --git a/openair1/SIMULATION/NR_PHY/ulsim.c b/openair1/SIMULATION/NR_PHY/ulsim.c index 7e74f26f56..eac4290f77 100644 --- a/openair1/SIMULATION/NR_PHY/ulsim.c +++ b/openair1/SIMULATION/NR_PHY/ulsim.c @@ -53,6 +53,7 @@ #include "common/openairinterface5g_limits.h" #include "common/ran_context.h" #include "common/utils/LOG/log.h" +#include "common/utils/bits.h" #include "common/utils/T/T.h" #include "common/utils/nr/nr_common.h" #include "common/utils/threadPool/thread-pool.h" diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c index d65b080176..6003693126 100644 --- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c +++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c @@ -5,7 +5,7 @@ #include #include "nr_mac.h" #include "nr_mac_common.h" -#include "common/utils/nr/nr_common.h" +#include "common/utils/bits.h" #include #include diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index f7b239ab38..b43f16c019 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -27,7 +27,7 @@ /* utils */ #include "assertions.h" -#include "reverse_bits.h" +#include "bits.h" #include "oai_asn1.h" #include "common/utils/LOG/log.h" #include "LAYER2/nr_rlc/nr_rlc_oai_api.h" diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c index 15c59716be..47ee80a529 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c @@ -23,7 +23,7 @@ #include "oai_asn1.h" #include "SIMULATION/TOOLS/sim.h" // for taus #include "utils.h" - +#include "bits.h" #include #include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h" #include "RRC/NR_UE/L2_interface_ue.h" diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c index 3341455e45..a1220c9df7 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c @@ -15,7 +15,7 @@ /* Utils */ #include "common/utils/LOG/log.h" -#include "common/utils/nr/nr_common.h" +#include "common/utils/bits.h" #include "UTIL/OPT/opt.h" /* rlc */ diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c index 6e2e4970a0..3dc39f9612 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_primitives.c @@ -11,8 +11,8 @@ #include "NR_MAC_gNB/nr_mac_gNB.h" #include "NR_MAC_gNB/mac_proto.h" +#include "common/utils/bits.h" #include "common/utils/LOG/log.h" -#include "common/utils/nr/nr_common.h" #include "UTIL/OPT/opt.h" #include "openair2/LAYER2/nr_rlc/nr_rlc_oai_api.h" diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.c b/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.c index ad3b4997dc..9f8f9b7314 100644 --- a/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.c +++ b/openair2/LAYER2/NR_MAC_gNB/nr_radio_config.c @@ -24,7 +24,7 @@ #include "openair2/LAYER2/NR_MAC_gNB/mac_proto.h" #include "openair3/UTILS/conversions.h" #include "LAYER2/nr_rlc/nr_rlc_asn1_utils.h" -#include "reverse_bits.h" +#include "bits.h" #include "NR_MeasurementTimingConfiguration.h" #include "uper_decoder.h" diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 21e95164e7..f00eebf321 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -11,7 +11,7 @@ #include "NR_MAC_UE/mac_proto.h" #include "assertions.h" #include "SCHED_NR_UE/fapi_nr_ue_l1.h" -#include "reverse_bits.h" +#include "bits.h" #include "openair2/RRC/NR_UE/L2_interface_ue.h" #define MAX_IF_MODULES 100 diff --git a/openair2/RRC/NR_UE/verify_RRC.c b/openair2/RRC/NR_UE/verify_RRC.c index 42d3204d27..60bdee462e 100644 --- a/openair2/RRC/NR_UE/verify_RRC.c +++ b/openair2/RRC/NR_UE/verify_RRC.c @@ -2,7 +2,8 @@ * SPDX-License-Identifier: LicenseRef-CSSL-1.0 */ - #include "rrc_proto.h" +#include "rrc_proto.h" +#include "common/utils/bits.h" static bool check_resourcesForInterference(const NR_CSI_MeasConfig_t *meas, NR_CSI_ResourceConfigId_t res_id, bool is_CSIIM) {