inline void unaligned_unpack_7()

in aios/storage/indexlib/index/common/numeric_compress/UnalignedUnpack.h [568:678]


inline void unaligned_unpack_7(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 << 25) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val1 << 18) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val1 << 11) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val1 << 4) >> 25;
    if (--rest == 0)
        return;

    uint32_t val2 = encode[offset++];
    decode[++decodedOffset] = ((val2 << 29) >> 25) | (val1 >> 28);
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val2 << 22) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val2 << 15) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val2 << 8) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val2 << 1) >> 25;
    if (--rest == 0)
        return;

    uint32_t val3 = encode[offset++];
    decode[++decodedOffset] = ((val3 << 26) >> 25) | (val2 >> 31);
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val3 << 19) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val3 << 12) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val3 << 5) >> 25;
    if (--rest == 0)
        return;

    uint32_t val4 = encode[offset++];
    decode[++decodedOffset] = ((val4 << 30) >> 25) | (val3 >> 27);
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val4 << 23) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val4 << 16) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val4 << 9) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val4 << 2) >> 25;
    if (--rest == 0)
        return;

    uint32_t val5 = encode[offset++];
    decode[++decodedOffset] = ((val5 << 27) >> 25) | (val4 >> 30);
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val5 << 20) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val5 << 13) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val5 << 6) >> 25;
    if (--rest == 0)
        return;

    uint32_t val6 = encode[offset++];
    decode[++decodedOffset] = ((val6 << 31) >> 25) | (val5 >> 26);
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val6 << 24) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val6 << 17) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val6 << 10) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val6 << 3) >> 25;
    if (--rest == 0)
        return;

    uint32_t val7 = encode[offset++];
    decode[++decodedOffset] = ((val7 << 28) >> 25) | (val6 >> 29);
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val7 << 21) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val7 << 14) >> 25;
    if (--rest == 0)
        return;
    decode[++decodedOffset] = (val7 << 7) >> 25;
    return;
}