Pixie
Loading...
Searching...
No Matches
slot_order.h File Reference

Experimental split-bit and byte orders for 32/64 physical slots. More...

#include <pixie/bits.h>
#include <algorithm>
#include <array>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <limits>
#include <type_traits>

Go to the source code of this file.

Classes

class  pixie::experimental::SplitSlotOrder< N >
 Experimental 32/64-slot order with separate low nibbles and high bits. More...
 
class  pixie::experimental::ByteSlotOrder< N, Simd >
 Byte-index control for the split-bit slot-order experiment. More...
 

Namespaces

namespace  pixie::experimental
 

Functions

template<class Word>
constexpr Word pixie::experimental::slot_order_detail::mask (std::size_t bits) noexcept
 
template<class Word, std::size_t Words>
void pixie::experimental::slot_order_detail::rotate_bits (std::array< Word, Words > &words, std::size_t left, std::size_t length, std::size_t distance) noexcept
 
template<std::size_t N>
void pixie::experimental::slot_order_detail::rotate_bytes (std::array< std::uint8_t, N > &bytes, std::size_t left, std::size_t right, std::size_t distance) noexcept
 

Variables

template<std::size_t N>
constexpr auto pixie::experimental::slot_order_detail::identity
 

Detailed Description

Experimental split-bit and byte orders for 32/64 physical slots.

Split order encoding occupies 20/48 bytes; complete objects occupy 24/56 bytes, versus 33/65 for byte orders. Physical occupancy is dense, so count represents it without a stored bitmap. Split-bit rotation is scalar; byte rotation dispatches locally to supported SIMD or a scalar fallback. Primitive probes exclude tree traversal, subtree measures, and allocation. Current primitive and integrated measurements are retained in benchmarks/sequence_snapshot.md.

Variable Documentation

◆ identity

template<std::size_t N>
auto pixie::experimental::slot_order_detail::identity
inlineconstexpr
Initial value:
= [] {
std::array<std::uint8_t, N> result{};
for (std::size_t i = 0; i < N; ++i) {
result[i] = i;
}
return result;
}()