void pack_31()

in aios/storage/indexlib/index/common/numeric_compress/Pack.h [3151:3315]


void pack_31(uint32_t* dest, const Type* encode, uint32_t n)
{
    for (uint32_t i = 32; i <= n; i += 32, encode += 32, dest += 31) {
        uint32_t res0;
        uint32_t res1;
        uint32_t res2;
        uint32_t res3;
        uint32_t res4;
        uint32_t res5;
        uint32_t res6;
        uint32_t res7;
        uint32_t res8;
        uint32_t res9;
        uint32_t res10;
        uint32_t res11;
        uint32_t res12;
        uint32_t res13;
        uint32_t res14;
        uint32_t res15;
        uint32_t res16;
        uint32_t res17;
        uint32_t res18;
        uint32_t res19;
        uint32_t res20;
        uint32_t res21;
        uint32_t res22;
        uint32_t res23;
        uint32_t res24;
        uint32_t res25;
        uint32_t res26;
        uint32_t res27;
        uint32_t res28;
        uint32_t res29;
        uint32_t res30;

        res0 = (encode[0] & 0x7FFFFFFF);
        res0 |= ((encode[1] & 0x7FFFFFFF) << 31);

        res1 = ((encode[1] & 0x7FFFFFFF) >> 1);
        res1 |= ((encode[2] & 0x7FFFFFFF) << 30);

        res2 = ((encode[2] & 0x7FFFFFFF) >> 2);
        res2 |= ((encode[3] & 0x7FFFFFFF) << 29);

        res3 = ((encode[3] & 0x7FFFFFFF) >> 3);
        res3 |= ((encode[4] & 0x7FFFFFFF) << 28);

        res4 = ((encode[4] & 0x7FFFFFFF) >> 4);
        res4 |= ((encode[5] & 0x7FFFFFFF) << 27);

        res5 = ((encode[5] & 0x7FFFFFFF) >> 5);
        res5 |= ((encode[6] & 0x7FFFFFFF) << 26);

        res6 = ((encode[6] & 0x7FFFFFFF) >> 6);
        res6 |= ((encode[7] & 0x7FFFFFFF) << 25);

        res7 = ((encode[7] & 0x7FFFFFFF) >> 7);
        res7 |= ((encode[8] & 0x7FFFFFFF) << 24);

        res8 = ((encode[8] & 0x7FFFFFFF) >> 8);
        res8 |= ((encode[9] & 0x7FFFFFFF) << 23);

        res9 = ((encode[9] & 0x7FFFFFFF) >> 9);
        res9 |= ((encode[10] & 0x7FFFFFFF) << 22);

        res10 = ((encode[10] & 0x7FFFFFFF) >> 10);
        res10 |= ((encode[11] & 0x7FFFFFFF) << 21);

        res11 = ((encode[11] & 0x7FFFFFFF) >> 11);
        res11 |= ((encode[12] & 0x7FFFFFFF) << 20);

        res12 = ((encode[12] & 0x7FFFFFFF) >> 12);
        res12 |= ((encode[13] & 0x7FFFFFFF) << 19);

        res13 = ((encode[13] & 0x7FFFFFFF) >> 13);
        res13 |= ((encode[14] & 0x7FFFFFFF) << 18);

        res14 = ((encode[14] & 0x7FFFFFFF) >> 14);
        res14 |= ((encode[15] & 0x7FFFFFFF) << 17);

        res15 = ((encode[15] & 0x7FFFFFFF) >> 15);
        res15 |= ((encode[16] & 0x7FFFFFFF) << 16);

        res16 = ((encode[16] & 0x7FFFFFFF) >> 16);
        res16 |= ((encode[17] & 0x7FFFFFFF) << 15);

        res17 = ((encode[17] & 0x7FFFFFFF) >> 17);
        res17 |= ((encode[18] & 0x7FFFFFFF) << 14);

        res18 = ((encode[18] & 0x7FFFFFFF) >> 18);
        res18 |= ((encode[19] & 0x7FFFFFFF) << 13);

        res19 = ((encode[19] & 0x7FFFFFFF) >> 19);
        res19 |= ((encode[20] & 0x7FFFFFFF) << 12);

        res20 = ((encode[20] & 0x7FFFFFFF) >> 20);
        res20 |= ((encode[21] & 0x7FFFFFFF) << 11);

        res21 = ((encode[21] & 0x7FFFFFFF) >> 21);
        res21 |= ((encode[22] & 0x7FFFFFFF) << 10);

        res22 = ((encode[22] & 0x7FFFFFFF) >> 22);
        res22 |= ((encode[23] & 0x7FFFFFFF) << 9);

        res23 = ((encode[23] & 0x7FFFFFFF) >> 23);
        res23 |= ((encode[24] & 0x7FFFFFFF) << 8);

        res24 = ((encode[24] & 0x7FFFFFFF) >> 24);
        res24 |= ((encode[25] & 0x7FFFFFFF) << 7);

        res25 = ((encode[25] & 0x7FFFFFFF) >> 25);
        res25 |= ((encode[26] & 0x7FFFFFFF) << 6);

        res26 = ((encode[26] & 0x7FFFFFFF) >> 26);
        res26 |= ((encode[27] & 0x7FFFFFFF) << 5);

        res27 = ((encode[27] & 0x7FFFFFFF) >> 27);
        res27 |= ((encode[28] & 0x7FFFFFFF) << 4);

        res28 = ((encode[28] & 0x7FFFFFFF) >> 28);
        res28 |= ((encode[29] & 0x7FFFFFFF) << 3);

        res29 = ((encode[29] & 0x7FFFFFFF) >> 29);
        res29 |= ((encode[30] & 0x7FFFFFFF) << 2);

        res30 = ((encode[30] & 0x7FFFFFFF) >> 30);
        res30 |= ((encode[31] & 0x7FFFFFFF) << 1);

        dest[0] = res0;
        dest[1] = res1;
        dest[2] = res2;
        dest[3] = res3;
        dest[4] = res4;
        dest[5] = res5;
        dest[6] = res6;
        dest[7] = res7;
        dest[8] = res8;
        dest[9] = res9;
        dest[10] = res10;
        dest[11] = res11;
        dest[12] = res12;
        dest[13] = res13;
        dest[14] = res14;
        dest[15] = res15;
        dest[16] = res16;
        dest[17] = res17;
        dest[18] = res18;
        dest[19] = res19;
        dest[20] = res20;
        dest[21] = res21;
        dest[22] = res22;
        dest[23] = res23;
        dest[24] = res24;
        dest[25] = res25;
        dest[26] = res26;
        dest[27] = res27;
        dest[28] = res28;
        dest[29] = res29;
        dest[30] = res30;
    }
    uint32_t rest = n % 32;
    if (rest > 0) {
        pack(dest, encode, rest, 31);
    }
}