<div dir="ltr">Hi Tomas,<br><br>I again have a question related to your SSE accelerated Viterbi<br>decoder, and I hope it's the last issue, which prevents us from<br>finishing this work. In short, SSE based implementation provides<br>one-byte different decoding result for SCH transcoding test. So,<br>the whole GSM 05.03 coding test fails.<br><br>I have done some debugging, and would like to share some results.<br>Have a look at the tests/coding/test_sch(), which first encodes<br>a L3 packet into ubits and sbits, then some bits are getting<br>destroyed, then the gsm0503_sch_decode() is being called to get<br>decoded bytes back, and finally decoded bytes are being compared<br>with original bytes.<br><br>As long as encoder implementation is not covered by SSE code,<br>it works as before. But SSE accelerated decoder outputs one-byte<br>different result in case of SCH:<br><br>int gsm0503_sch_decode(uint8_t *sb_info, sbit_t *burst)<br>{<br>    ubit_t conv[35];<br>    int rv;<br><br>    osmo_conv_decode(&gsm0503_sch, burst, conv);<br><br>    rv = osmo_crc16gen_check_bits(&gsm0503_sch_crc10,<br>        conv, 25, conv + 25);<br>    if (rv)<br>        return -1;<br><br>    // ...<br>}<br><br>// Original implementation<br>ubit_t conv[35] = {<br>    0x01 0x01 0x00 0x01 0x00 0x00 0x00 0x00 0x01 0x01 0x00 0x00<br>    0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00<br>    0x00 0x00 0x01 0x00 0x00 0x01 0x01 0x01 0x00 0x01 0x00<br>};<br><br>// Accelerated implementation<br>ubit_t conv[35] = {<br>    0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x01 0x00 0x00<br>    0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00<br>    0x00 0x00 0x01 0x00 0x00 0x01 0x01 0x01 0x00 0x01 0x00<br>};<br><br>As you can see, the conv[3] isn't the same in both cases. So,<br>at the next step the osmo_crc16gen_check_bits() returns -1.<br><br>Latest version of this change:<br><a href="https://gerrit.osmocom.org/#/c/2454/">https://gerrit.osmocom.org/#/c/2454/</a><br><br>Do you have any ideas? Despite SCH decoding isn't required on<br>BTS side, the problem may be more global, than the test shows.<br><br><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>With best regards,<br></div><div>Vadim Yanitskiy.<br></div></div></div></div></div></div>
</div>