in aios/storage/indexlib/index/common/numeric_compress/UnalignedUnpack.h [214:316]
inline void unaligned_unpack_3(Type* decode, const uint32_t* encode, uint32_t dataNum)
{
uint32_t offset = 0;
uint32_t rest = dataNum;
uint32_t decodedOffset = 0;
uint32_t val1 = encode[offset++];
decode[decodedOffset] = (val1 << 29) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val1 << 26) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val1 << 23) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val1 << 20) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val1 << 17) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val1 << 14) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val1 << 11) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val1 << 8) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val1 << 5) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val1 << 2) >> 29;
if (--rest == 0)
return;
uint32_t val2 = encode[offset++];
decode[++decodedOffset] = ((val2 << 31) >> 29) | (val1 >> 30);
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 28) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 25) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 22) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 19) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 16) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 13) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 10) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 7) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 4) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val2 << 1) >> 29;
if (--rest == 0)
return;
uint32_t val3 = encode[offset++];
decode[++decodedOffset] = ((val3 << 30) >> 29) | (val2 >> 31);
if (--rest == 0)
return;
decode[++decodedOffset] = (val3 << 27) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val3 << 24) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val3 << 21) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val3 << 18) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val3 << 15) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val3 << 12) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val3 << 9) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val3 << 6) >> 29;
if (--rest == 0)
return;
decode[++decodedOffset] = (val3 << 3) >> 29;
return;
}