X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=docs%2FAPI%2Fxran__compression_8cpp.html;fp=docs%2FAPI%2Fxran__compression_8cpp.html;h=0a1098e80624b5e51c47b47ee686a1e9e64b2c80;hb=870e1b86b0c74169b215c166dee787c7c1a20d06;hp=0000000000000000000000000000000000000000;hpb=298022ce50fa8133cc880507170c4b7120d227b5;p=o-du%2Fphy.git diff --git a/docs/API/xran__compression_8cpp.html b/docs/API/xran__compression_8cpp.html new file mode 100644 index 0000000..0a1098e --- /dev/null +++ b/docs/API/xran__compression_8cpp.html @@ -0,0 +1,642 @@ + + + + + + + +o-du/phy: xran_compression.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
o-du/phy +
+
Intel O-RAN/X-RAN Generated Doxygen Documentation
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Macros | +Typedefs | +Functions
+
+
xran_compression.cpp File Reference
+
+
+
#include "xran_compression.hpp"
+#include "xran_compression.h"
+#include <complex>
+#include <algorithm>
+#include <immintrin.h>
+#include <limits.h>
+#include <cstring>
+
+Include dependency graph for xran_compression.cpp:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + +

+Macros

#define RB_NUM_ROUNDUP(rb)   (BlockFloatCompander::k_numRB * ((rb + BlockFloatCompander::k_numRB - 1) / BlockFloatCompander::k_numRB))
 
+ + + + + + + +

+Typedefs

typedef void(* xran_bfp_compress_fn) (const BlockFloatCompander::ExpandedData &dataIn, BlockFloatCompander::CompressedData *dataOut)
 
typedef void(* xran_bfp_compress_bfw_fn) (const BlockFloatCompanderBFW::ExpandedData &dataIn, BlockFloatCompanderBFW::CompressedData *dataOut)
 
typedef void(* xran_bfp_decompress_fn) (const BlockFloatCompander::CompressedData &dataIn, BlockFloatCompander::ExpandedData *dataOut)
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

void computeExponent (const BlockFloatCompander::ExpandedData &dataIn, int8_t *expStore)
 Compute exponent value for a set of RB from the maximum absolute value. More...
 
__m512i networkBytePack9b (const __m512i compData)
 
__m512i networkBytePack10b (const __m512i compData)
 
__m512i networkBytePack12b (const __m512i compData)
 
__m512i networkByteUnpack9b (const uint8_t *inData)
 
__m512i networkByteUnpack10b (const uint8_t *inData)
 
__m512i networkByteUnpack12b (const uint8_t *inData)
 
int32_t xranlib_compress_avx512 (const struct xranlib_compress_request *request, struct xranlib_compress_response *response)
 
int32_t xranlib_compress_avx512_bfw (const struct xranlib_compress_request *request, struct xranlib_compress_response *response)
 
int32_t xranlib_decompress_avx512 (const struct xranlib_decompress_request *request, struct xranlib_decompress_response *response)
 
+

Macro Definition Documentation

+ +

◆ RB_NUM_ROUNDUP

+ +
+
+ + + + + + + + +
#define RB_NUM_ROUNDUP( rb)   (BlockFloatCompander::k_numRB * ((rb + BlockFloatCompander::k_numRB - 1) / BlockFloatCompander::k_numRB))
+
+ +

Definition at line 720 of file xran_compression.cpp.

+ +
+
+

Typedef Documentation

+ +

◆ xran_bfp_compress_bfw_fn

+ +
+
+ + + + +
typedef void(* xran_bfp_compress_bfw_fn) (const BlockFloatCompanderBFW::ExpandedData &dataIn, BlockFloatCompanderBFW::CompressedData *dataOut)
+
+

callback function type for Symbol packet

+ +

Definition at line 780 of file xran_compression.cpp.

+ +
+
+ +

◆ xran_bfp_compress_fn

+ +
+
+ + + + +
typedef void(* xran_bfp_compress_fn) (const BlockFloatCompander::ExpandedData &dataIn, BlockFloatCompander::CompressedData *dataOut)
+
+

callback function type for Symbol packet

+ +

Definition at line 725 of file xran_compression.cpp.

+ +
+
+ +

◆ xran_bfp_decompress_fn

+ +
+
+ + + + +
typedef void(* xran_bfp_decompress_fn) (const BlockFloatCompander::CompressedData &dataIn, BlockFloatCompander::ExpandedData *dataOut)
+
+

callback function type for Symbol packet

+ +

Definition at line 830 of file xran_compression.cpp.

+ +
+
+

Function Documentation

+ +

◆ computeExponent()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void computeExponent (const BlockFloatCompander::ExpandedDatadataIn,
int8_t * expStore 
)
+
+ +

Compute exponent value for a set of RB from the maximum absolute value.

+

Load data and find max(abs(RB))

+

Re-order the next 4RB in input data into 3 registers Input SIMD vectors are: [A A A A A A A A A A A A B B B B] [B B B B B B B B C C C C C C C C] [C C C C D D D D D D D D D D D D] Re-ordered SIMD vectors are: [A A A A B B B B C C C C D D D D] [A A A A B B B B C C C C D D D D] [A A A A B B B B C C C C D D D D]

+

Perform max abs on these 3 registers

+

Perform horizontal max over each lane Swap 64b in each lane and compute max

+

Swap each pair of 32b in each lane and compute max

+

Swap each IQ pair in each lane (via 32b rotation) and compute max

+

Insert values into maxAbs Use sliding mask to insert wanted values into maxAbs Pairs of values will be inserted and corrected outside of loop

+

Convert to 32b by removing repeated values in maxAbs

+

Compute and store exponent

+ +

Definition at line 44 of file xran_compression.cpp.

+
+Here is the caller graph for this function:
+
+
+ + + + + + + + + + + + +
+ +
+
+ +

◆ networkBytePack10b()

+ +
+
+ + + + + + + + +
__m512i networkBytePack10b (const __m512i compData)
+
+

Pack compressed 10 bit data in network byte order See https://soco.intel.com/docs/DOC-2665619

+

Logical shift left to align network order byte parts

+

First epi8 shuffle of even indexed samples

+

Second epi8 shuffle of odd indexed samples

+

Ternary blend of the two shuffled results

+ +

Definition at line 164 of file xran_compression.cpp.

+
+Here is the caller graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ networkBytePack12b()

+ +
+
+ + + + + + + + +
__m512i networkBytePack12b (const __m512i compData)
+
+

Pack compressed 12 bit data in network byte order See https://soco.intel.com/docs/DOC-2665619

+

Logical shift left to align network order byte parts

+

First epi8 shuffle of even indexed samples

+

Second epi8 shuffle of odd indexed samples

+

Ternary blend of the two shuffled results

+ +

Definition at line 201 of file xran_compression.cpp.

+
+Here is the caller graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ networkBytePack9b()

+ +
+
+ + + + + + + + +
__m512i networkBytePack9b (const __m512i compData)
+
+

Pack compressed 9 bit data in network byte order See https://soco.intel.com/docs/DOC-2665619

+

Logical shift left to align network order byte parts

+

First epi8 shuffle of even indexed samples

+

Second epi8 shuffle of odd indexed samples

+

Ternary blend of the two shuffled results

+ +

Definition at line 127 of file xran_compression.cpp.

+
+Here is the caller graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ networkByteUnpack10b()

+ +
+
+ + + + + + + + +
__m512i networkByteUnpack10b (const uint8_t * inData)
+
+

Unpack compressed 10 bit data in network byte order See https://soco.intel.com/docs/DOC-2665619

+

Align chunks of compressed bytes into lanes to allow for expansion

+

Byte shuffle to get all bits for each sample into 16b chunks Due to previous permute to get chunks of bytes into each lane, lanes 0 and 2 happen to be aligned, but lane 1 is offset by 2 bytes

+

Logical shift left to set sign bit

+

Mask to zero unwanted bits

+ +

Definition at line 271 of file xran_compression.cpp.

+
+Here is the caller graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ networkByteUnpack12b()

+ +
+
+ + + + + + + + +
__m512i networkByteUnpack12b (const uint8_t * inData)
+
+

Unpack compressed 12 bit data in network byte order See https://soco.intel.com/docs/DOC-2665619

+

Align chunks of compressed bytes into lanes to allow for expansion

+

Byte shuffle to get all bits for each sample into 16b chunks For 12b mantissa all lanes post-permute are aligned and require same shuffle offset

+

Logical shift left to set sign bit

+

Mask to zero unwanted bits

+ +

Definition at line 304 of file xran_compression.cpp.

+
+Here is the caller graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ networkByteUnpack9b()

+ +
+
+ + + + + + + + +
__m512i networkByteUnpack9b (const uint8_t * inData)
+
+

Unpack compressed 9 bit data in network byte order See https://soco.intel.com/docs/DOC-2665619

+

Align chunks of compressed bytes into lanes to allow for expansion

+

Byte shuffle to get all bits for each sample into 16b chunks Due to previous permute to get chunks of bytes into each lane, there is a different shuffle offset in each lane

+

Logical shift left to set sign bit

+

Mask to zero unwanted bits

+ +

Definition at line 238 of file xran_compression.cpp.

+
+Here is the caller graph for this function:
+
+
+ + + + + + +
+ +
+
+ +

◆ xranlib_compress_avx512()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int32_t xranlib_compress_avx512 (const struct xranlib_compress_requestrequest,
struct xranlib_compress_responseresponse 
)
+
+ +

Definition at line 729 of file xran_compression.cpp.

+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + +
+
+Here is the caller graph for this function:
+
+
+ + + +
+ +
+
+ +

◆ xranlib_compress_avx512_bfw()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int32_t xranlib_compress_avx512_bfw (const struct xranlib_compress_requestrequest,
struct xranlib_compress_responseresponse 
)
+
+ +

Definition at line 783 of file xran_compression.cpp.

+
+Here is the call graph for this function:
+
+
+ + + + +
+
+Here is the caller graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ xranlib_decompress_avx512()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int32_t xranlib_decompress_avx512 (const struct xranlib_decompress_requestrequest,
struct xranlib_decompress_responseresponse 
)
+
+ +

Definition at line 834 of file xran_compression.cpp.

+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + +
+
+Here is the caller graph for this function:
+
+
+ + + +
+ +
+
+
+ + + +