/****************************************************************************** * * Copyright (c) 2020 Intel. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *******************************************************************************/ #include #include /*! \struct bblib_llr_demapping_5gnr_mod_compression_request \brief Structure defining modulation compression lib. */ enum xran_modulation_order { XRAN_BPSK = 1, /*!< BPSK */ XRAN_QPSK = 2, /*!< QPSK */ XRAN_PAM4 = 3, /*!< PAM4 */ XRAN_QAM16 = 4, /*!< QAM16 */ XRAN_PAM8 = 5, /*!< PAM8 */ XRAN_QAM64 = 6, /*!< QAM64 */ XRAN_PAM16 = 7, /*!< PAM16 */ XRAN_QAM256 = 8 /*!< QAM256 */ }; struct xranlib_5gnr_mod_compression_request { /*! Pointer to buffer of the input symbols - buffer must be 64 byte aligned. Format 16Sx. */ int16_t * data_in; /*! 16bit shift value used to scale the input samples. */ int16_t unit; /*! Supported modulation values are: 2 (QPSK), 4 (16QAM), 6 (64QAM), 8 (256QAM). */ enum xran_modulation_order modulation; int32_t num_symbols; /*!< Number of complex input symbols. */ int16_t re_mask; /*!< RE mask in one RB. */ }; /*! \struct bblib_llr_demapping_5gnr_mod_compression_response \brief Structure defining the modualtion compression output. */ struct xranlib_5gnr_mod_compression_response { /*! Pointer to output buffer - buffer should be 64 byte aligned.bit sequence*/ int8_t * data_out; /*!< Pointer to data after compression. */ int32_t len_out; /*!< Length of output data in bytes. */ }; struct xranlib_5gnr_mod_decompression_request { /*! Pointer to buffer of the input symbols - buffer must be 64 byte aligned. Format 16Sx. */ int8_t * data_in; /*! 16bit shift value used to scale the input samples. */ int16_t unit; /*! Supported modulation values are: 2 (QPSK), 4 (16QAM), 6 (64QAM), 8 (256QAM). */ enum xran_modulation_order modulation; int32_t num_symbols; /*!< Number of complex input symbols. */ int16_t re_mask; /*!< RE mask in one RB. */ }; /*! \struct bblib_llr_demapping_5gnr_mod_compression_response \brief Structure defining the modualtion compression output. */ struct xranlib_5gnr_mod_decompression_response { /*! Pointer to output buffer - buffer should be 64 byte aligned.bit sequence*/ int16_t * data_out; /*!< Pointer to data after compression. */ int32_t len_out; /*!< Length of output data in bytes. */ }; //! @{ /*! \brief modulation compression procedures. */ int xranlib_5gnr_mod_compression(const struct xranlib_5gnr_mod_compression_request* request, struct xranlib_5gnr_mod_compression_response* response); int xranlib_5gnr_mod_compression_avx512(const struct xranlib_5gnr_mod_compression_request* request, struct xranlib_5gnr_mod_compression_response* response); int xranlib_5gnr_mod_compression_snc(const struct xranlib_5gnr_mod_compression_request* request, struct xranlib_5gnr_mod_compression_response* response); int xranlib_5gnr_mod_compression_c(const struct xranlib_5gnr_mod_compression_request* request, struct xranlib_5gnr_mod_compression_response* response); int xranlib_5gnr_mod_decompression(const struct xranlib_5gnr_mod_decompression_request* request, struct xranlib_5gnr_mod_decompression_response* response);