static inline void unpack_bits_61()

in theta/include/bit_packing.hpp [5903:5979]


static inline void unpack_bits_61(uint64_t* values, const uint8_t* ptr) {
  values[0] = static_cast<uint64_t>(*ptr++) << 53;
  values[0] |= static_cast<uint64_t>(*ptr++) << 45;
  values[0] |= static_cast<uint64_t>(*ptr++) << 37;
  values[0] |= static_cast<uint64_t>(*ptr++) << 29;
  values[0] |= *ptr++ << 21;
  values[0] |= *ptr++ << 13;
  values[0] |= *ptr++ << 5;
  values[0] |= *ptr >> 3;

  values[1] = static_cast<uint64_t>(*ptr++ & 7) << 58;
  values[1] |= static_cast<uint64_t>(*ptr++) << 50;
  values[1] |= static_cast<uint64_t>(*ptr++) << 42;
  values[1] |= static_cast<uint64_t>(*ptr++) << 34;
  values[1] |= static_cast<uint64_t>(*ptr++) << 26;
  values[1] |= *ptr++ << 18;
  values[1] |= *ptr++ << 10;
  values[1] |= *ptr++ << 2;
  values[1] |= *ptr >> 6;

  values[2] = static_cast<uint64_t>(*ptr++ & 0x3f) << 55;
  values[2] |= static_cast<uint64_t>(*ptr++) << 47;
  values[2] |= static_cast<uint64_t>(*ptr++) << 39;
  values[2] |= static_cast<uint64_t>(*ptr++) << 31;
  values[2] |= *ptr++ << 23;
  values[2] |= *ptr++ << 15;
  values[2] |= *ptr++ << 7;
  values[2] |= *ptr >> 1;

  values[3] = static_cast<uint64_t>(*ptr++ & 1) << 60;
  values[3] |= static_cast<uint64_t>(*ptr++) << 52;
  values[3] |= static_cast<uint64_t>(*ptr++) << 44;
  values[3] |= static_cast<uint64_t>(*ptr++) << 36;
  values[3] |= static_cast<uint64_t>(*ptr++) << 28;
  values[3] |= *ptr++ << 20;
  values[3] |= *ptr++ << 12;
  values[3] |= *ptr++ << 4;
  values[3] |= *ptr >> 4;

  values[4] = static_cast<uint64_t>(*ptr++ & 0xf) << 57;
  values[4] |= static_cast<uint64_t>(*ptr++) << 49;
  values[4] |= static_cast<uint64_t>(*ptr++) << 41;
  values[4] |= static_cast<uint64_t>(*ptr++) << 33;
  values[4] |= static_cast<uint64_t>(*ptr++) << 25;
  values[4] |= *ptr++ << 17;
  values[4] |= *ptr++ << 9;
  values[4] |= *ptr++ << 1;
  values[4] |= *ptr >> 7;

  values[5] = static_cast<uint64_t>(*ptr++ & 0x7f) << 54;
  values[5] |= static_cast<uint64_t>(*ptr++) << 46;
  values[5] |= static_cast<uint64_t>(*ptr++) << 38;
  values[5] |= static_cast<uint64_t>(*ptr++) << 30;
  values[5] |= *ptr++ << 22;
  values[5] |= *ptr++ << 14;
  values[5] |= *ptr++ << 6;
  values[5] |= *ptr >> 2;

  values[6] = static_cast<uint64_t>(*ptr++ & 3) << 59;
  values[6] |= static_cast<uint64_t>(*ptr++) << 51;
  values[6] |= static_cast<uint64_t>(*ptr++) << 43;
  values[6] |= static_cast<uint64_t>(*ptr++) << 35;
  values[6] |= static_cast<uint64_t>(*ptr++) << 27;
  values[6] |= *ptr++ << 19;
  values[6] |= *ptr++ << 11;
  values[6] |= *ptr++ << 3;
  values[6] |= *ptr >> 5;

  values[7] = static_cast<uint64_t>(*ptr++ & 0x1f) << 56;
  values[7] |= static_cast<uint64_t>(*ptr++) << 48;
  values[7] |= static_cast<uint64_t>(*ptr++) << 40;
  values[7] |= static_cast<uint64_t>(*ptr++) << 32;
  values[7] |= static_cast<uint64_t>(*ptr++) << 24;
  values[7] |= *ptr++ << 16;
  values[7] |= *ptr++ << 8;
  values[7] |= *ptr;
}