Skip to content

Commit

Permalink
Implement RldBpDecoder::next() using fast bitunpacking
Browse files Browse the repository at this point in the history
RldBpDecoder::next() will be used to decode repetition levels and
definition levels for complex types (ARRAY and MAP).
  • Loading branch information
yingsu00 committed Nov 3, 2022
1 parent 699f7aa commit 7645361
Show file tree
Hide file tree
Showing 11 changed files with 6,662 additions and 114 deletions.
9 changes: 5 additions & 4 deletions velox/dwio/common/BitPackDecoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ namespace facebook::velox::dwio::common {
using int128_t = __int128_t;

#if XSIMD_WITH_AVX2
// Bit unpacking using BMI2 and AVX2.

typedef int32_t __m256si __attribute__((__vector_size__(32), __may_alias__));

typedef int32_t __m256si_u
Expand Down Expand Up @@ -165,14 +165,15 @@ int32_t decode1To24(
return i;
}

} // namespace
#endif

#define WIDTH_CASE(width) \
case width: \
i = decode1To24<width>(bits, bitOffset, rows.data(), numSafeRows, result); \
break;

} // namespace

#endif

template <typename T>
void unpack(
const uint64_t* FOLLY_NONNULL bits,
Expand Down
Loading

0 comments on commit 7645361

Please sign in to comment.