-
Romain Beurdouche authored
1. nrLDPC_coding_segment_encoder: pointer not aligned on 64 bits An undefined behavior was happening because of a shift on a __m64 which was actually a uint32_t which was not aligned on 64 bits. This commit suggests a fix by properly loading into a __m64 with _mm_set_pi32 before performing the shift. 2. nr_rate_matching: Filler bits detection Previously, if the bit selection was reaching Ncb and restarting selection from the beginning of encoded data, the filler bits were detected by testing the bytes again NR_NULL which was equal to 2. But on this branch the bits of up to 8 segments are stored in one byte while doing rate matching so that one byte could be tested to be a filler while it is not. So this commit changes the way to test filler bits. Instead of relying on NR_NULL, bit selection now relies on the offset and size of filler bits. 3. nr_ulsch_coding: missing filling f with zeros The array `f` of the UE UL HARQ process was not filled with zeros between transmissions. This is a problem if the encoder does not properly overwrite its output. In order to avoid such situation, this commit adds a memset to fill `f` with zeros before passing it to the encoder. 4. nrLDPC_coding_segment_encoder: missing init of f to zeros In the encoder, `f` is not filled with zeros before being used. `f` is instead somehow filled with arbitrary values. When writing to `output` by 64 bit vectors, some arbitrary bits may be added after the segment. Then the arbitrary added ones are not overwritten when writing the next segment because of writing with a logical or. This commit properly fills `f` and `f2` with zeros. 5. nr_ulschsim & nr_dlschsim: Adapt modulation to new encoder output The QPSK symbols that are feed to the channel model of nr_dlschsim were determined based on the bytes of the encoder output. With the new output of the encoder, it had to be reworked to determine the QPSK symbols based on the bits of the encoder output.
f3daf0ed